@怪人
2年前 提问
1个回答
软件安全的软件行为的捕获实现方法有哪些
趣能一姐
2年前
软件安全的软件行为的捕获实现方法有以下这些:
DLL代理方式:该方法通过为原来的DLL创建一个代理来实现对API调用的截获。代理DLL中包含了与原动态链接库中相同的输出函数表,对于需要截获的函数,需要在代理DLL中该函数的位置上替换新的函数以完成附加功能。
DLL注入方式:Windows提供了这种机制,因为DLL是和使用它的.EXE文件在同一个地址空间,为了实现一个DLL能被目标.EXE文件载入,就需要DLL注入技术,有SetWindowsHookEx和CreateRemoteThread两种方法。
在系统调用中加入补丁:在目标应用程序中欲截获的API函数处添加定位代码(补丁),将调用转到新的位置。此方法需要反汇编技术的支持。
修改输入地址表:IAT中保存可执行代码所调用的输入函数相对于文件的偏移地址。该方法借助于Windows IAT的重定位机制来实现API函数的调用截获。
修改API函数:实现这种机制有两种方法:一是利用断点中断指令(INT 3)对目标API函数设置断点,同时将截获代码作为调试代码;另一种是利用CPU的转移控制指令替换目标API函数的第一个字节,如CALL或JMP等。
利用Detours:微软开发的Detours库的主要功能是拦截x86机器上的任意Win32二进制函数(API Hook)、编辑二进制文件的输入表,以及向二进制文件添加任意数据段。借助于Detours可以轻易地实现API Hook的功能。